package pig.controller;

import java.io.File;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.List;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import pig.model.BuyVO;
import pig.model.DealVO;
import pig.model.SellerDAO;
import pig.model.SellerVO;

@Controller
@RequestMapping("/seller")
public class SellerController {
	@Resource(name = "sellerDAOImpl")
	private SellerDAO sellerDAO;

	@RequestMapping("/{viewId}_view.do")
	public String showView(@PathVariable("viewId") String viewId) {
		return viewId + "_view.seller";
	}
	@Resource(name = "uploadPath")
	private String path;

	/**
	 * 판매자 회원가입 무결성제약조건을 방지하기 위해 redirect 김세환 14.11.24
	 */
	@RequestMapping(value = "seller_register.do", method = RequestMethod.POST)
	public ModelAndView customer_register(SellerVO sellerVO)
			throws UnsupportedEncodingException {
		sellerDAO.sellerRegister(sellerVO);
		return new ModelAndView("redirect:sRegisterResult.do");
	}
	
	/**
	 * 판매자 회원가입 김세환 14.11.24
	 */
	@RequestMapping("sRegisterResult.do")
	public String customer_registerResult(HttpServletRequest request,
			HttpServletResponse response) throws UnsupportedEncodingException {
		return "index";
	}

	/**
	 * 판매자 회원가입 아이디 중복체크 김세환 14.11.24
	 */
	@RequestMapping(value = "sIdcheck.do", method = RequestMethod.POST)
	@ResponseBody
	public int sIdcheck(HttpServletRequest request, HttpServletResponse response) {
		String id = request.getParameter("sellerId");
		int result = sellerDAO.idCheck(id);
		System.out.println(result);
		return result;
	}

	/**
	 * 판매자 회원가입 이메일 중복체크 윤미혜
	 */
	@RequestMapping(value = "sEmailcheck.do", method = RequestMethod.POST)
	@ResponseBody
	public int emailCheck(HttpServletRequest request, HttpServletResponse response) {
		String email = request.getParameter("sellerEmail");
		int result = sellerDAO.emailCheck(email);
		return result;
	}
	/**
	 * 판매자 회원정보수정
	 * 윤미혜
	 * 판매자 회원정보수정 윤미혜
	 */
	@RequestMapping("updateSellerInfo.do")
	public ModelAndView updateSellerInfo(HttpServletRequest request,
			SellerVO sellerVO) {
		System.out.println(sellerVO);
		sellerDAO.updateSeller(sellerVO);
		return new ModelAndView("sellerupdate_result.seller");
	}

	/**
	 * 판매자가 상품을 등록하는 메서드 전현갑 14.11.25
	 */
	@RequestMapping(value = "/registerDeal.do", method = RequestMethod.POST)
	public String register(HttpSession session, DealVO dealVo,
			MultipartFile uploadFile) throws UnsupportedEncodingException {

		dealVo.setDealImage(uploadFile.getOriginalFilename()); // 파일명 등록
		sellerDAO.registerDeal(dealVo); // 상품을 등록
		String dealNum = sellerDAO.findDealNumber(); // 상품번호 찾기

		int pos = uploadFile.getOriginalFilename().lastIndexOf(".");
		String ext = uploadFile.getOriginalFilename().substring(pos); // 확장자명
																		// 구하기
		String imgName = dealNum + ext; // 이미지 딜.확장자 로 변경

		if (uploadFile != null && !uploadFile.isEmpty()) {
			File copyFile = new File(path + imgName);
			try {
				uploadFile.transferTo(copyFile);
				sellerDAO.registerDealImage(dealNum, imgName); // 이미지업로드
			} catch (IllegalStateException | IOException e) {
				e.printStackTrace();
			}
		}
		return "redirect:registerDealResultView.do?dealNumber="
				+ dealVo.getDealNumber();
	}

	/**
	 * 판매자 상품 등록에 필요한 카테고리 리스트 열거 조동희 14.12.01
	 */
	@RequestMapping("auth_getCategoryKind.do")
	public ModelAndView getCategoryKind(HttpServletRequest request,
			HttpServletResponse response) {
		List<String> categoryKind = sellerDAO.getCategoryKind();
		System.out.println(categoryKind.toArray());

		return new ModelAndView("register_Deal_view.seller", "categoryKind",
				categoryKind);
	}

	/**
	 * 등록한 상품의 정보를 보여주는 메서드 전현갑 14.11.25
	 */
	@RequestMapping("/registerDealResultView.do")
	public ModelAndView registerResultView(String dealNumber)
			throws UnsupportedEncodingException {
		DealVO dealVO = sellerDAO.findDealByNumber(dealNumber);
		return new ModelAndView("register_Deal_result.seller", "dealVO", dealVO);
	}

	/**
	 * 판매자가 등록한 상품의 리스트를 보여주는 메서드 전현갑 14.11.25
	 */
	@RequestMapping("auth_showDealListBySeller.do")
	public ModelAndView showDealListBySeller(HttpSession session) {
		SellerVO sellerVo = (SellerVO) session.getAttribute("login");
		List<DealVO> dealList = sellerDAO.showDealListBySeller(sellerVo
				.getSellerId());
		return new ModelAndView("showDealListBySeller.seller", "dealList",
				dealList);
	}

	/**
	 * 판매자가 등록한 상품 상세보기 판매가가 등록한 상품 상세보기 전현갑 14.11.26
	 */
	@RequestMapping("/showDealContents.do")
	public ModelAndView showDealContents(String dealNumber) {
		DealVO dealVO = sellerDAO.findDealByNumber(dealNumber);
		return new ModelAndView("show_DealContents.common", "dealVo", dealVO);
	}

	/**
	 * 판매가가 등록한 상품 수정하러 가기 전현갑 14.11.27
	 */
	@RequestMapping("/update_Deal.do")
	public ModelAndView update_Deal(String dealNumber) {
		DealVO dealVO = sellerDAO.findDealByNumber(dealNumber);
		return new ModelAndView("update_Deal.seller", "dealVO", dealVO);
	}

	/**
	 * 판매자 등록한 상품 수정하기 전현갑 14.11.27
	 */
	@RequestMapping("/update_DealInfo.do")
	public ModelAndView update_DealInfo(DealVO dealVo, MultipartFile uploadFile)
			throws UnsupportedEncodingException {
		String file = uploadFile.getOriginalFilename();
		if (file == "" || file == null) {
			// 파일이 없으므로 그대로 저장
			sellerDAO.updateDealInfo(dealVo);
		} else {
			// 이미지 파일 수정 있음
			dealVo.setDealImage(uploadFile.getOriginalFilename());
			sellerDAO.updateDealInfo(dealVo);// 전체 업데이트
			// 이미지 파일명 재수정
			int pos = uploadFile.getOriginalFilename().lastIndexOf(".");
			String ext = uploadFile.getOriginalFilename().substring(pos); // 확장자명
																			// 구하기
			String imgName = dealVo.getDealNumber() + ext; // 이미지 딜.확장자 로 변경
			if (uploadFile != null && !uploadFile.isEmpty()) {
				File copyFile = new File(path + imgName);
				try {
					uploadFile.transferTo(copyFile);
					sellerDAO
							.registerDealImage(dealVo.getDealNumber(), imgName); // 이미지업로드
				} catch (IllegalStateException | IOException e) {
					e.printStackTrace();
				}
			}
		}
		DealVO dealVO = sellerDAO.findDealByNumber(dealVo.getDealNumber());
		return new ModelAndView("update_DealInfo.seller", "dealVO", dealVO);
	}

	/**
	 * 판매자 판매리스트보기 조동희 14.12.02
	 */
	@RequestMapping("auth_seller_Dealhistory.do")
	public ModelAndView seller_Dealhistory(HttpServletRequest request,
			HttpServletResponse response, HttpSession session) {
		SellerVO sellerVO = (SellerVO) session.getAttribute("login");
		String sellerId = sellerVO.getSellerId();
		List<BuyVO> list = sellerDAO.seller_Dealhistory(sellerId);
		request.setAttribute("list", list);
		return new ModelAndView("seller_DealHistory.seller");
	}
	/**
	 * 판매자 판매된 딜내역 보기 조동희 14.12.03
	 */
	@RequestMapping("/find_DealByHistory.do")
	@ResponseBody
	public List<BuyVO> findDealByHistory(HttpServletRequest request,
			HttpServletResponse response, HttpSession session, String history) {
		SellerVO sellerVO = (SellerVO) session.getAttribute("login");
		String sellerId = sellerVO.getSellerId();
		history = request.getParameter("history");
		List<BuyVO> list = null;
		if (history.equals("dealNumber")) {
			list = sellerDAO.findHistoryByDealNumber(sellerId);
			request.setAttribute("list", list);
		} else if (history.equals("dealTitle")) {
			list = sellerDAO.findHistoryByDealTitle(sellerId);
			request.setAttribute("list", list);
		} else if (history.equals("customerId")) {
			list = sellerDAO.findHistoryByCustomerId(sellerId);
			request.setAttribute("list", list);
		}
		return list;
	}
}
/*
 * DealVO dealVo, MultipartFile uploadFile ) throws UnsupportedEncodingException
 * { String file=uploadFile.getOriginalFilename(); if(file==""||file==null){
 * //파일이 없으므로 그대로 저장 sellerDAO.updateDealInfo(dealVo); }else{ //이미지 파일 수정 있음
 * dealVo.setDealImage(uploadFile.getOriginalFilename());
 * sellerDAO.updateDealInfo(dealVo);//전체 업데이트 //이미지 파일명 재수정 int pos =
 * uploadFile.getOriginalFilename().lastIndexOf( "." ); String ext =
 * uploadFile.getOriginalFilename().substring(pos); //확장자명 구하기 String imgName =
 * dealVo.getDealNumber()+ext; // 이미지 딜.확장자 로 변경
 * if(uploadFile!=null&&!uploadFile.isEmpty()){ File copyFile=new
 * File(path+imgName); try { uploadFile.transferTo(copyFile);
 * sellerDAO.registerDealImage(dealVo.getDealNumber(),imgName); //이미지업로드 } catch
 * (IllegalStateException | IOException e) { e.printStackTrace(); } }
 * 
 * }
 */
